/*
 * 描          述:  <描述>
 * 修  改   人:  PengQingyang
 * 修改时间:  2022年11月11日
 * <修改描述:>
 */
package com.tx.component.attachment.args;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 附件详情查询器<br/>
 * <功能详细描述>
 * 
 * @author  PengQingyang
 * @version  [版本号, 2022年11月11日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AttachmentDetailQueryArgs {
    
    /** 目录 */
    private String catalog;
    
    /** 相对路径 */
    private String relativePath;
    
    /** 附件分类Key */
    private String categoryKey;
    
    /** businessKey */
    private String businessKey;
    
    /** typeKey */
    private String typeKey;
    
    /** filename */
    private String filename;
    
    /** filenameExtension */
    private String filenameExtension;
    
    /** businessKeys */
    @Builder.Default
    private Set<String> businessKeys = new HashSet<>();
    
    /** typeKeys */
    @Builder.Default
    private Set<String> typeKeys = new HashSet<>();;
    
    /** filenameExtensions */
    @Builder.Default
    private Set<String> filenameExtensions = new HashSet<>();;
    
    /** tagValueEquals */
    @Builder.Default
    private Map<String, String> tagValueEquals = new HashMap<>();
    
    /** tagValueIn */
    @Builder.Default
    private MultiValueMap<String, String> tagValueIns = new LinkedMultiValueMap<>();
    
    ///**
    // * businessKeys
    // * <功能详细描述>
    // * @param businessKeys
    // * @return [参数说明]
    // * 
    // * @return AttachmentDetailQueryArgs [返回类型说明]
    // * @exception throws [异常类型] [异常说明]
    // * @see [类、类#方法、类#成员]
    // */
    //public AttachmentDetailQueryArgs businessKeys(String... businessKeys) {
    //    this.businessKeys.addAll(Arrays.asList(businessKeys));
    //    return this;
    //}
    //
    ///**
    // * typeKeys
    // * <功能详细描述>
    // * @param typeKeys
    // * @return [参数说明]
    // * 
    // * @return AttachmentDetailQueryArgs [返回类型说明]
    // * @exception throws [异常类型] [异常说明]
    // * @see [类、类#方法、类#成员]
    // */
    //public AttachmentDetailQueryArgs typeKeys(String... typeKeys) {
    //    this.typeKeys.addAll(Arrays.asList(typeKeys));
    //    return this;
    //}
    //
    ///**
    // * filenameExtensions
    // * <功能详细描述>
    // * @param filenameExtensions
    // * @return [参数说明]
    // * 
    // * @return AttachmentDetailQueryArgs [返回类型说明]
    // * @exception throws [异常类型] [异常说明]
    // * @see [类、类#方法、类#成员]
    // */
    //public AttachmentDetailQueryArgs filenameExtensions(
    //        String... filenameExtensions) {
    //    this.filenameExtensions.addAll(Arrays.asList(filenameExtensions));
    //    return this;
    //}
    //
    //    /**
    //     * tagValueEqual
    //     * <功能详细描述>
    //     * @param name
    //     * @param text
    //     * @return [参数说明]
    //     * 
    //     * @return AttachmentDetailQueryArgs [返回类型说明]
    //     * @exception throws [异常类型] [异常说明]
    //     * @see [类、类#方法、类#成员]
    //     */
    //    public AttachmentDetailQueryArgs tagValueEqual(String name, String text) {
    //        if (StringUtils.hasLength(name) && StringUtils.hasLength(text)) {
    //            this.tagValueEquals.put(name, text);
    //        }
    //        return this;
    //    }
    //    
    //    /**
    //     * tagValueIn
    //     * <功能详细描述>
    //     * @param name
    //     * @param texts
    //     * @return [参数说明]
    //     * 
    //     * @return AttachmentDetailQueryArgs [返回类型说明]
    //     * @exception throws [异常类型] [异常说明]
    //     * @see [类、类#方法、类#成员]
    //     */
    //    public AttachmentDetailQueryArgs tagValueIn(String name, String... texts) {
    //        if (StringUtils.hasLength(name) && ArrayUtils.isNotEmpty(texts)) {
    //            this.tagValueIns.put(name, Arrays.asList(texts));
    //        }
    //        return this;
    //    }
}
